package com.testing.class6;

import java.util.*;
import java.util.Map.Entry;

public class MapTest {

    public static void main(String[] args) {
        //实例化  Map<K,V>
        Map<String,Integer> ageMap= new HashMap<>();

        //map存储的时候，也是无序的，是因为map存储key的时候，用的是一个set来进行存储。
        //增
        ageMap.put("roy",31);
        ageMap.put("will",31);
        //map中键不能重复
        ageMap.put("will",35);
        ageMap.put("kaka",27);

        //删
        //建议使用键+值的remove方法，更安全。
        ageMap.remove("will",34);
//        ageMap.remove("will");

        //改，修改，可以直接用put来完成，往keyput一个新的值就可以了
        ageMap.replace("will",18);

        //查
        //获取键对应的值。
        ageMap.get("will");
        //由于map存储用的是set，所以没有下标，不能用普通for循环遍历
        //foreach循环：
        //1、用键值对  Entry<K,V>来进行遍历map的entryset集合。
        for(Entry<String,Integer> pair:ageMap.entrySet()){
            System.out.println(pair);
            System.out.println(pair.getKey() + "长大一岁之后是" + (pair.getValue() + 1));
        }

        System.out.println("----------keyset遍历------------");

        //2、用键 key 来遍历map中的keyset集合。
        for( String key : ageMap.keySet()){
            System.out.println(key);
            System.out.println(key+ "长大一岁之后是" + (ageMap.get(key) + 1));
        }

        System.out.println("---------------Iterator遍历---------------");
        //迭代器遍历
        //1、通过entryset来进行遍历
        Iterator<Entry<String, Integer>> entryIt = ageMap.entrySet().iterator();
        while(entryIt.hasNext()){
            //修正：一次hasnext只取一次值。
//            Entry<String, Integer> entry = entryIt.next();
//            System.out.println(entry.getKey()+"长大一岁之后是" +entry.getValue());
            //一次hasnext判断，进行了两次next取值。所以取第4个的时候，已经没有元素了。
            try {
                System.out.println(entryIt.next().getKey()+ "长大一岁之后是" +entryIt.next().getValue());
            } catch (NoSuchElementException e) {
                e.printStackTrace();
                System.out.println("next方法调用可能有问题");
            }
        }

        //2keyset遍历
        Iterator<String> keyIt=ageMap.keySet().iterator();
        while (keyIt.hasNext()){
            String key=keyIt.next();
            System.out.println(key+"年龄是"+ageMap.get(key));
        }


        System.out.println(ageMap);
    }
}
